home *** CD-ROM | disk | FTP | other *** search
/ PC Advisor 2011 May / PC Advisor 190 E.iso / pc / ESSENTIALS / VLC Media Player 1.1 / vlc-1.1.5-win32.exe / sdk / include / vlc / plugins / vlc_probe.h < prev    next >
Encoding:
C/C++ Source or Header  |  2010-11-13  |  2.0 KB  |  70 lines

  1. /*****************************************************************************
  2.  * vlc_probe.h: service probing interface
  3.  *****************************************************************************
  4.  * Copyright (C) 2009 R├⌐mi Denis-Courmont
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU Lesser General Public License as published by
  8.  * the Free Software Foundation; either version 2.1 of the License, or
  9.  * (at your option) any later version.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU Lesser General Public License
  17.  * along with this program; if not, write to the Free Software
  18.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  19.  *****************************************************************************/
  20.  
  21. #ifndef VLC_PROBE_H
  22. # define VLC_PROBE_H 1
  23.  
  24. # include <stdlib.h>
  25.  
  26. /**
  27.  * \file
  28.  * This file defines functions and structures to run-time probe VLC extensions
  29.  */
  30.  
  31. # ifdef __cplusplus
  32. extern "C" {
  33. # endif
  34.  
  35. void *vlc_probe (vlc_object_t *, const char *, size_t *restrict);
  36. #define vlc_probe(obj, cap, pcount) \
  37.         vlc_probe(VLC_OBJECT(obj), cap, pcount)
  38.  
  39. struct vlc_probe_t
  40. {
  41.     VLC_COMMON_MEMBERS
  42.  
  43.     void  *list;
  44.     size_t count;
  45. };
  46.  
  47. typedef struct vlc_probe_t vlc_probe_t;
  48.  
  49. static inline int vlc_probe_add(vlc_probe_t *obj, const void *data,
  50.                                 size_t len)
  51. {
  52.     char *tab = (char *)realloc (obj->list, (obj->count + 1) * len);
  53.  
  54.     if (unlikely(tab == NULL))
  55.         return VLC_ENOMEM;
  56.     memcpy(tab + (obj->count * len), data, len);
  57.     obj->list = tab;
  58.     obj->count++;
  59.     return VLC_SUCCESS;
  60. }
  61.  
  62. # define VLC_PROBE_CONTINUE VLC_EGENERIC
  63. # define VLC_PROBE_STOP     VLC_SUCCESS
  64.  
  65. # ifdef __cplusplus
  66. }
  67. # endif
  68.  
  69. #endif
  70.